home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / include / mx.h < prev    next >
C/C++ Source or Header  |  1990-03-29  |  7KB  |  220 lines

  1. /*
  2.  * mx.h --
  3.  *
  4.  *    This file declares things that are exported by one file within
  5.  *    the Mx editor and imported by other files.  These are also things
  6.  *    that are available to outside clients since the Mx/Tx
  7.  *    stuff has been made into a library.
  8.  *
  9.  * Copyright (C) 1986 Regents of the University of California
  10.  * Permission to use, copy, modify, and distribute this
  11.  * software and its documentation for any purpose and without
  12.  * fee is hereby granted, provided that the above copyright
  13.  * notice appear in all copies.  The University of California
  14.  * makes no representations about the suitability of this
  15.  * software for any purpose.  It is provided "as is" without
  16.  * express or implied warranty.
  17.  *
  18.  * $Header: /sprite/src/lib/mx/RCS/mx.h,v 1.18 90/03/25 15:16:51 ouster Exp $ SPRITE (Berkeley)
  19.  */
  20.  
  21. #ifndef _MX
  22. #define _MX
  23.  
  24. #ifndef _XLIB_H_
  25. #include <X11/Xlib.h>
  26. #endif
  27. #include <stdio.h>
  28.  
  29. /*
  30.  * The structure below is used as an indicator of a location within
  31.  * a file.  Below it are macros for comparing two positions.
  32.  */
  33.  
  34. typedef struct {
  35.     int lineIndex;    /* Index of line (0 means first line in file). */
  36.     int charIndex;    /* Index of character within a line. */
  37. } Mx_Position;
  38.  
  39. #define MX_POS_EQUAL(a, b) \
  40.     (((a).lineIndex == (b).lineIndex) \
  41.     && ((a).charIndex == (b).charIndex))
  42.  
  43. #define MX_POS_LESS(a, b) \
  44.     (((a).lineIndex < (b).lineIndex) \
  45.     || (((a).lineIndex == (b).lineIndex) \
  46.     && ((a).charIndex < (b).charIndex)))
  47.  
  48. #define MX_POS_LEQ(a, b) \
  49.     (((a).lineIndex < (b).lineIndex) \
  50.     || (((a).lineIndex == (b).lineIndex) \
  51.     && ((a).charIndex <= (b).charIndex)))
  52. /*
  53.  * The definitions below are dummy ones, so that clients don't have
  54.  * to see the real contents of data structures.  Instead, clients just
  55.  * pass tokens to the procedures that manipulate the structures.
  56.  */
  57.  
  58. typedef struct Mx_File        *Mx_File;
  59. typedef struct Mx_Floater    *Mx_Floater;
  60. typedef struct Mx_Spy        *Mx_Spy;
  61. typedef struct Undo_Log        *Undo_Log;
  62.  
  63. /*
  64.  * Records of the following type are used to pass in information
  65.  * to Mx_Make when creating an editable window.
  66.  */
  67.  
  68. typedef struct {
  69.     Mx_File file;        /* File that's already been loaded and should
  70.                  * be displayed in the window.  If NULL, name
  71.                  * is used to open file. */
  72.     char *name;            /* Name of file to be loaded in window,
  73.                  * or NULL if file doesn't correspond to
  74.                  * anything on disk. */
  75.     XFontStruct *fontPtr;    /* Font to use for window.  If NULL, use
  76.                  * Sx default font. */
  77.     int width, height;        /* Dimensions of containing window,
  78.                      * in pixels. */
  79.     unsigned long foreground;    /* Foreground color to use for window. */
  80.     unsigned long background;    /* Background color to use for window. */
  81.     unsigned long border;    /* Color to use for border. */
  82.     unsigned long sbForeground;    /* Color to use for scrollbar foreground. */
  83.     unsigned long sbBackground;    /* Color to use for scrollbar background. */
  84.     unsigned long sbElevator;    /* Color to use for scrollbar elevator. */
  85.     unsigned long titleForeground;/* Color to use for title foreground. */
  86.     unsigned long titleBackground;/* Color to use for title background. */
  87.     unsigned long titleStripe;    /* Color to use for title stripe. */
  88.     int flags;            /* Miscellaneous flag values.  See below. */
  89. } Mx_WindowInfo;
  90.  
  91. /*
  92.  * Flag values for Mx_WindowInfo structures:
  93.  *
  94.  * MX_UNDO:        1 means create undo log and use it to track changes
  95.  *            in the file (name must be non-NULL).  0 means no
  96.  *            undoing.
  97.  * MX_DELETE:        1 means close the Mx_File when the last window on
  98.  *            the window is deleted.  0 means don't ever close
  99.  *            the file:  the caller will handle it.
  100.  * MX_NO_TITLE:        Don't actually display a title bar:  a window
  101.  *            manager will take care of it.
  102.  */
  103.  
  104. #define MX_UNDO        1
  105. #define MX_DELETE    2
  106. #define MX_NO_TITLE    8
  107.  
  108. /*
  109.  * Records of the following type are used to pass information to
  110.  * Tx_Make when creating typescript windows.
  111.  */
  112.  
  113. typedef struct {
  114.     Window source;        /* If non-NULL, the new window should
  115.                      * view the same typescript as this window.
  116.                  * If NULL, a new typescript is created. */
  117.     char *title;        /* Character string to display in title.  */
  118.     XFontStruct *fontPtr;    /* Font to use for window.  If NULL, use
  119.                  * Sx default font. */
  120.     int width, height;        /* Dimensions of containing window,
  121.                      * in pixels. */
  122.     unsigned long foreground;    /* Foreground color to use for window. */
  123.     unsigned long background;    /* Background color to use for window. */
  124.     unsigned long border;    /* Color to use for border. */
  125.     unsigned long sbForeground;    /* Color to use for scrollbar foreground. */
  126.     unsigned long sbBackground;    /* Color to use for scrollbar background. */
  127.     unsigned long sbElevator;    /* Color to use for scrollbar elevator. */
  128.     unsigned long titleForeground;/* Color to use for title foreground. */
  129.     unsigned long titleBackground;/* Color to use for title background. */
  130.     unsigned long titleStripe;    /* Color to use for title stripe. */
  131.     int flags;            /* Miscellaneous flags:  see below. */
  132. } Tx_WindowInfo;
  133.  
  134. /*
  135.  * Flag values from Tx_WindowInfo structure:
  136.  *
  137.  * TX_NO_TITLE:        Don't actually display a title bar:  a window
  138.  *            manager will take care of it.
  139.  */
  140.  
  141. #define TX_NO_TITLE    1
  142.  
  143. /*
  144.  * The flag bits below are used as parameters to Mx_CreateSpy to
  145.  * indicate when a spy procedure should be called.
  146.  */
  147.  
  148. #define MX_BEFORE        1
  149. #define MX_AFTER        2
  150.  
  151. /*
  152.  * The values below may be passed to Mx_HighlightCreate to specify
  153.  * how a highlight is to be displayed:
  154.  */
  155.  
  156. #define MX_REVERSE        1
  157. #define MX_GRAY            2
  158. #define MX_UNDERLINE        3
  159. #define MX_BOX            4
  160.  
  161. /*
  162.  * Constants for undo module:
  163.  */
  164.  
  165. #define UNDO_ID_LENGTH 60
  166. #define UNDO_NAME_LENGTH 600
  167.  
  168. /*
  169.  * Exported procedures:
  170.  */
  171.  
  172. extern void        Mx_MarkClean();
  173. extern Mx_Position    Mx_EndOfFile();
  174. extern Mx_File        Mx_FileLoad();
  175. extern void        Mx_FileClose();
  176. extern int        Mx_FileWrite();
  177. extern Mx_Floater    Mx_FloaterCreate();
  178. extern void        Mx_FloaterDelete();
  179. extern char *        Mx_GetLine();
  180. extern Mx_Position    Mx_Offset();
  181. extern void        Mx_ReplaceBytes();
  182. extern Mx_Spy        Mx_SpyCreate();
  183. extern void        Mx_SpyDelete();
  184. extern Mx_Position    Mx_ZeroPosition;
  185.  
  186. extern int        Mx_SearchMask();
  187. extern int        Mx_SearchParen();
  188. extern int        Mx_SearchPattern();
  189. extern int        Mx_SearchRegExp();
  190. extern void        Mx_ReplaceRegExp();
  191. extern int        Mx_SearchWord();
  192. extern char *        Mx_CompileRegExp();
  193. extern int        Mx_GetTag();
  194.  
  195. extern Undo_Log        Undo_LogCreate();
  196. extern void        Undo_LogDelete();
  197. extern int        Undo_FindLog();
  198. extern void        Undo_Mark();
  199. extern void        Undo_SetVersion();
  200. extern int        Undo_Last();
  201. extern int        Undo_More();
  202. extern int        Undo_Recover();
  203.  
  204. extern void        Mx_Cleanup();
  205. extern int        Mx_Make();
  206. extern void        Mx_Update();
  207. extern int        mx_FileCount;
  208. extern Display *    mx_Display;
  209.  
  210. extern int        Tx_Command();
  211. extern int        Tx_Make();
  212. extern void        Tx_Output();
  213. extern int        Ts_SetupAndFork();
  214. extern void        Tx_Update();
  215. extern void        Tx_WindowEventProc();
  216. extern int        tx_TypescriptCount;
  217. extern Display *    tx_Display;
  218.  
  219. #endif _MX
  220.